<?php

include 'database.php';
include 'template.php';

$precioTarValle = 0.02;
$precioTarPico = 0.05;

class ElementoConsumoPlantilla {

    public $elementoConsumoName;
    public $ud;
    public $potencia;
    public $horas;
    public $porTarValle;
    public $porTarPico;
    public $costeTotal;

    function costeElemento() {

        global $precioTarPico, $precioTarValle;

        $costeTarValle = $this->horas * ($this->porTarValle / 100) * (($this->potencia * $precioTarValle) / 1000);
        $costeTarPico = $this->horas * ($this->porTarPico / 100) * (($this->potencia * $precioTarPico) / 1000);
        $costeTotal = ($costeTarPico + $costeTarValle) * $this->ud;

        $this->costeTotal = $costeTotal;

        return $costeTotal;
    }

}

class CategoriaPlantilla {

    public $arrayElementosConsumo;
    public $costeCategoria;
    public $categoriaName;

    function costeCategoria() {

        $costeCategoria = 0;

        foreach ($this->arrayElementosConsumo as $elemento) {
            $elemento->costeElemento();
            $costeCategoria = $costeCategoria + $elemento->costeTotal;
        }

        $this->costeCategoria = $costeCategoria;

        return $costeCategoria;
    }

}

class Plantilla {

    public $arrayCategorias;
    public $costePlantilla;
    public $plantillaName;

    function costePlantilla() {

        foreach ($this->arrayCategorias as $categoria) {
            $categoria->costeCategoria();
            $costePlantilla = $costePlantilla + $categoria->costeCategoria;
        }

        $this->costePlantilla = $costePlantilla;

        return $costePlantilla;
    }

}

$doneMessage = "La información ha sido actualizada. <a href=\"Index.php\">Click aquí para volver al inicio</a></h1>";

$mode = htmlspecialchars($_GET["mode"]);

//print_r($_POST);
//print_r(array_keys($_POST));

switch ($mode) {

    case 'index':



        $action = $_POST["plantillas"];

        switch ($action) {


            case 'alta':

                //echo "alta";

                $resul = "<form action=\"plantilla.php?mode=alta\" method=\"post\">
            Nombre: <input type=\"text\" name=\"plantillaName\" />
            Descripción: <input type=\"text\" name=\"plantillaDescription\" />
            <input type=\"submit\" value=\"Guardar\" name=\"guardar\"/>
            </form> ";

                break;

            case 'baja':

                $resul = "<form action=\"plantilla.php?mode=baja\" method=\"post\">
            Nombre: <input type=\"text\" name=\"plantillaName\" />
            <input type=\"submit\" value=\"Baja\" name=\"baja\"/>
            </form> ";

                break;

            case 'modificacion':

                $resul = "<h3> Modificar plantilla </h3><form action=\"plantilla.php?mode=modificacion\" method=\"post\">
            Nombre plantilla: <input type=\"text\" name=\"plantillaName\" />
            Nueva descripción: <input type=\"text\" name=\"plantillaDescription\" />
            <input type=\"submit\" value=\"Guardar\" name=\"guardar\"/>
            </form>  <h3> Añadir o modificar elemento consumo</h3> <form action=\"plantilla.php?mode=addConsumeElement\" method=\"post\">
            Nombre plantilla: <input type=\"text\" name=\"plantillaName\" />
            Elemento consumo a añadir: <input type=\"text\" name=\"elementoConsumoName\" />
            Unidades del elemento consumo: <input type=\"text\" name=\"unidades\" />
            Porcentaje de uso en horario valle: <input type=\"text\" name=\"porHorarioValle\" />
            Porcentaje de uso en horario pico: <input type=\"text\" name=\"porHorarioPico\" />
            Horas de uso: <input type=\"text\" name=\"horas\" />
            <input type=\"submit\" value=\"Guardar\" name=\"guardar\"/>
            </form>
            <h3>Eliminar elemento consumo</h3>
            <form action=\"plantilla.php?mode=removeConsumeElement\" method=\"post\">
            Nombre plantilla: <input type=\"text\" name=\"plantillaName\" />
            Elemento consumo a eliminar: <input type=\"text\" name=\"elementoConsumoName\" />  
            <input type=\"submit\" value=\"Guardar\" name=\"guardar\"/>
            </form> ";


                break;

            case 'consulta':

                $resul = "<form action=\"plantilla.php?mode=consulta\" method=\"post\">
            Nombre: <input type=\"text\" name=\"plantillaName\" />
            <input type=\"submit\" value=\"Consultar\" name=\"consulta\"/>
            </form> ";

                break;

            case 'comparacion':

                $resul = "<form action=\"plantilla.php?mode=comparacion\" method=\"post\">
            Nombre primera plantilla: <input type=\"text\" name=\"plantillaName1\" />
            Nombre segunda plantilla: <input type=\"text\" name=\"plantillaName2\" />
            <input type=\"submit\" value=\"Consultar\" name=\"consulta\"/>
            </form> ";

                break;
        }



        break;


    case 'alta':

        //INSERT INTO KrowdixDVE.SNM VALUES (1,0,'YetAnotherSN',1000);

        $query = "INSERT INTO plantilla VALUES ('" . $_POST["plantillaName"] . "','" . $_POST["plantillaDescription"] . "');";
        databaseQuery($query);
        $resul = $doneMessage;

        break;


    case 'addConsumeElement':

        //INSERT INTO KrowdixDVE.SNM VALUES (1,0,'YetAnotherSN',1000);
        // $query = "INSERT INTO plantilla VALUES ('" . $_POST["plantillaName"] . "','" . $_POST["plantillaDescription"] . "');";
        //databaseQuery($query);
        //print_r($_POST);
        // print_r($_GET);

        $query = "DELETE FROM elementosConsumoXplantillas WHERE elementoConsumoName='" . $_POST["elementoConsumoName"] . "';";

        databaseQuery($query);

        $query = "INSERT INTO elementosConsumoXplantillas VALUES ('" . $_POST["elementoConsumoName"] . "','" . $_POST["plantillaName"] . "','" . $_POST["unidades"] . "','" . $_POST["porHorarioValle"] . "','" . $_POST["porHorarioPico"] . "','" . $_POST["horas"] . "');";
        databaseQuery($query);
        $resul = $doneMessage;

        break;

    case 'removeConsumeElement':

        //INSERT INTO KrowdixDVE.SNM VALUES (1,0,'YetAnotherSN',1000);
        $query = "DELETE FROM elementosConsumoXplantillas WHERE elementoConsumoName='" . $_POST["elementoConsumoName"] . "';";

        databaseQuery($query);
        $resul = $doneMessage;

        break;


    case 'modificacion':

        //CHANGE (should allow add or extraction of consume elements

        $query = "DELETE FROM plantilla WHERE plantillaName='" . $_POST["plantillaName"] . "';";
        databaseQuery($query);
        $query = "INSERT INTO plantilla VALUES ('" . $_POST["plantillaName"] . "','" . $_POST["plantillaDescription"] . "');";
        databaseQuery($query);
        $resul = $doneMessage;

        break;


    case 'baja':
        //echo "hacer efectiva la baja";
        $query = "DELETE FROM plantilla WHERE plantillaName='" . $_POST["plantillaName"] . "';";
        //echo $query;
        databaseQuery($query);

        $query = "DELETE FROM elementosConsumoXplantillas WHERE plantillaName='" . $_POST["plantillaName"] . "';";

        $resul = $doneMessage;


        break;





    case 'consulta':
        //SELECT * FROM categoria
        // $resulQuery = databaseQuery($query);
        //Prints out information of that row
        //$resul = "Nombre de la plantilla: " . $row["plantillaName"] . " Descripcion: " . $row["plantillaDescripcion"] . " Descripcion: " . $row["plantillaDescripcion"];
        //para consultar TODOS
        //SELECT plantilla.plantillaDescripcion, elementosConsumo.elementoConsumoName, elementosConsumo.categoriaName, elementosConsumo.potencia, elementosConsumoXplantillas.plantillaName, elementosConsumoXplantillas.unidades, elementosConsumoXplantillas.porTarifaValle,elementosConsumoXplantillas.porTarifaPico,elementosConsumoXplantillas.horasUso FROM elementosConsumoXplantillas, elementosConsumo, plantilla WHERE elementosConsumoXplantillas.elementoConsumoName=elementosConsumo.elementoConsumoName AND elementosConsumoXplantillas.plantillaName=plantilla.plantillaName ORDER BY elementosConsumo.categoriaName;
        //SELECT elementosConsumo.elementoConsumoName, elementosConsumo.categoriaName, elementosConsumo.potencia, elementosConsumoXplantillas.plantillaName, elementosConsumoXplantillas.unidades, elementosConsumoXplantillas.porTarifaValle,elementosConsumoXplantillas.porTarifaPico,elementosConsumoXplantillas.horasUso FROM elementosConsumoXplantillas, elementosConsumo WHERE elementosConsumoXplantillas.elementoConsumoName=elementosConsumo.elementoConsumoName;
        //SELECT plantilla.plantillaDescripcion, elementosConsumo.elementoConsumoName, elementosConsumo.categoriaName, elementosConsumo.potencia, elementosConsumoXplantillas.plantillaName, elementosConsumoXplantillas.unidades, elementosConsumoXplantillas.porTarifaValle,elementosConsumoXplantillas.porTarifaPico,elementosConsumoXplantillas.horasUso FROM elementosConsumoXplantillas, elementosConsumo, plantilla WHERE elementosConsumoXplantillas.elementoConsumoName=elementosConsumo.elementoConsumoName AND elementosConsumoXplantillas.plantillaName=plantilla.plantillaName='hola' ORDER BY elementosConsumo.categoriaName;


        $query1 = "SELECT * FROM plantilla where plantilla.plantillaName LIKE '%" . $_POST["plantillaName"] . "%';";

        $resulQuery1 = databaseQuery($query1);

        $resul = "";
        while ($row = mysql_fetch_assoc($resulQuery1)) {

            $query = "select * from plantilla left join elementosConsumoXplantillas on plantilla.plantillaName=elementosConsumoXplantillas.plantillaName left join elementosConsumo on elementosConsumoXplantillas.elementoConsumoName=elementosConsumo.elementoConsumoName where plantilla.plantillaName='" . $row["plantillaName"] . "' order by categoriaName;";

            $plantilla1 = parsePlantillaQuery($query);
            $resul = $resul . "<h2>" . $plantilla1->plantillaName . "</h2>";

            foreach ($plantilla1->arrayCategorias as $categoria) {

                $resul = $resul . "<h3>" . $categoria->categoriaName . "</h3>";

                //$arrayPieChart[$categoria->categoriaName] = $categoria->costeCategoria;

                foreach ($categoria->arrayElementosConsumo as $elemento) {

                    $resul = $resul . "<p>" . $elemento->elementoConsumoName . " |Potencia=" . $elemento->potencia . " |% Valle=" . $elemento->porTarValle . " |% Pico=" . $elemento->porTarPico . " |Unidades=" . $elemento->ud . " |Horas=" . $elemento->horas . "</p>";
                }
            }
        }






        //$resul = "consulta php";
        break;


    case 'comparacion':

        //   echo "hacer efectiva la baja";
        // $query = "DELETE FROM categoria WHERE categoriaName='" . $_POST["plantillaName"] . "';";
        //echo $query;
        //databaseQuery($query);
        //display($doneMessage);
        //if refresh



        $query1 = "select * from plantilla left join elementosConsumoXplantillas on plantilla.plantillaName=elementosConsumoXplantillas.plantillaName left join elementosConsumo on elementosConsumoXplantillas.elementoConsumoName=elementosConsumo.elementoConsumoName where plantilla.plantillaName='" . $_POST["plantillaName1"] . "' order by categoriaName;";
        $query2 = "select * from plantilla left join elementosConsumoXplantillas on plantilla.plantillaName=elementosConsumoXplantillas.plantillaName left join elementosConsumo on elementosConsumoXplantillas.elementoConsumoName=elementosConsumo.elementoConsumoName where plantilla.plantillaName='" . $_POST["plantillaName2"] . "' order by categoriaName;";

        // $resulQuery1 = mysql_fetch_assoc(databaseQuery($query1));
        //$resulQuery2 = mysql_fetch_assoc(databaseQuery($query2));
        /*
          $catAux = "";



          $i = 0;

          $plantilla1 = new Plantilla();

          $resulQuery1 = databaseQuery($query1);
          $resulQuery2 = databaseQuery($query2);

          while ($row = mysql_fetch_assoc($resulQuery1)) {

          if ($i == 0) {
          $categoria = new CategoriaPlantilla();
          $plantilla1->plantillaName = $row["plantillaName"];
          $categoria->categoriaName = $row["categoriaName"];
          $catAux = $row["categoriaName"];
          //$plantilla1->arrayCategorias = $categoria;
          }

          if ($catAux != $row["categoriaName"]) {

          $plantilla1->arrayCategorias[] = $categoria;

          $categoria = new CategoriaPlantilla();
          $categoria->categoriaName = $row["categoriaName"];
          }


          $elementoConsumo = new ElementoConsumoPlantilla();


          $elementoConsumo->horas = $row["horasUso"];
          $elementoConsumo->elementoConsumoName = $row["elementoConsumoName"];
          $elementoConsumo->porTarPico = $row["porTarifaPico"];
          $elementoConsumo->porTarValle = $row["porTarifaValle"];
          $elementoConsumo->potencia = $row["potencia"];
          $elementoConsumo->ud = $row["unidades"];
          $categoria->arrayElementosConsumo[] = $elementoConsumo;

          $catAux = $row["categoriaName"];
          $i = $i + 1;
          }

          $plantilla1->arrayCategorias[] = $categoria;

          $plantilla1->costePlantilla();


          $plantilla2 = new Plantilla();

          $i = 0;

          while ($row = mysql_fetch_assoc($resulQuery2)) {

          if ($i == 0) {

          $categoria = new CategoriaPlantilla();
          $plantilla2->plantillaName = $row["plantillaName"];
          $categoria->categoriaName = $row["categoriaName"];
          $catAux = $row["categoriaName"];
          }

          if ($catAux != $row["categoriaName"]) {

          $plantilla2->arrayCategorias[] = $categoria;

          $categoria = new CategoriaPlantilla();
          $categoria->categoriaName = $row["categoriaName"];
          }


          $elementoConsumo = new ElementoConsumoPlantilla();

          $elementoConsumo->horas = $row["horasUso"];
          $elementoConsumo->elementoConsumoName = $row["elementoConsumoName"];
          $elementoConsumo->porTarPico = $row["porTarifaPico"];
          $elementoConsumo->porTarValle = $row["porTarifaValle"];
          $elementoConsumo->potencia = $row["potencia"];
          $elementoConsumo->ud = $row["unidades"];
          $categoria->arrayElementosConsumo[] = $elementoConsumo;






          $catAux = $row["categoriaName"];
          $i = $i + 1;
          }

          $plantilla2->arrayCategorias[] = $categoria;

          $plantilla2->costePlantilla();
         */


        $plantilla1 = parsePlantillaQuery($query1);
        $plantilla2 = parsePlantillaQuery($query2);

        //$resul1 = "<h2>Coste plantilla " . $plantilla1->plantillaName . "=" . $plantilla1->costePlantilla . "€</h2>";
        /*
          foreach ($plantilla1->arrayCategorias as $categoria) {

          $resul1 = $resul1 . "<h3>" . $categoria->categoriaName . "</h3>";

          $arrayPieChart[$categoria->categoriaName] = $categoria->costeCategoria;

          foreach ($categoria->arrayElementosConsumo as $elemento) {

          $resul1 = $resul1 . "<p>" . $elemento->elementoConsumoName . " |Potencia=" . $elemento->potencia . " |% Valle=" . $elemento->porTarValle . " |% Pico=" . $elemento->porTarPico . " |Unidades=" . $elemento->ud . " |Horas=" . $elemento->horas . "</p>";
          }
          }

          $resul1 = $resul1 . pieChart($plantilla1->plantillaName, $arrayPieChart);
         */
        $resul1 = generatePlantillaFormChart($plantilla1);



        //  $resul2 = "<h2>Coste plantilla " . $plantilla2->plantillaName . "=" . $plantilla2->costePlantilla . "€</h2>";
        /*
          foreach ($plantilla2->arrayCategorias as $categoria) {

          $resul2 = $resul2 . "<h3>" . $categoria->categoriaName . "</h3>";

          $arrayPieChart2[$categoria->categoriaName] = $categoria->costeCategoria;

          foreach ($categoria->arrayElementosConsumo as $elemento) {

          $resul2 = $resul2 . "<p>" . $elemento->elementoConsumoName . " |Potencia=" . $elemento->potencia . " |% Valle=" . $elemento->porTarValle . " |% Pico=" . $elemento->porTarPico . " |Unidades=" . $elemento->ud . " |Horas=" . $elemento->horas . "</p>";
          }
          }

          $resul2 = $resul2 . pieChart($plantilla2->plantillaName, $arrayPieChart2);
         */

        $resul2 = generatePlantillaFormChart($plantilla2);
        $resul = "<p>Coste del kW/h en Tarifa Valle= " . $precioTarValle . "€<p>Coste del kW/h en Tarifa Pico= " . $precioTarPico . "€</p>" . $resul1 . $resul2;


        break;
}

//echo "deberia mostrar resul";
display($resul);

function generatePlantillaFormChart($plantilla1) {
    $resul1 = "";

    $resul1 = "<h2>Coste plantilla " . $plantilla1->plantillaName . "=" . $plantilla1->costePlantilla . "€</h2>";

    foreach ($plantilla1->arrayCategorias as $categoria) {

        $resul1 = $resul1 . "<h3>" . $categoria->categoriaName . "</h3>";

        $arrayPieChart[$categoria->categoriaName] = $categoria->costeCategoria;

        foreach ($categoria->arrayElementosConsumo as $elemento) {

            // $resul1 = $resul1 . "<p>" . $elemento->elementoConsumoName . " |Potencia=" . $elemento->potencia . " |% Valle=" . $elemento->porTarValle . " |% Pico=" . $elemento->porTarPico . " |Unidades=" . $elemento->ud . " |Horas=" . $elemento->horas . "</p>";

            $resul1 = $resul1 . "<br><form action=\"plantilla.php?mode=addConsumeElement\" method=\"get\">
              <input type=\"hidden\" name=\"mode\" readonly=\"readonly\" value=\"refresh\"/>
              <input type=\"hidden\" name=\"plantillaName\" readonly=\"readonly\" value=\"" . $plantilla1->plantillaName . "\"/>
              Nombre: <input type=\"text\" name=\"elementoConsumoName\" readonly=\"readonly\" value=\"" . $elemento->elementoConsumoName . "\" />
              Potencia: <input type=\"text\" name=\"potencia\" readonly=\"readonly\" value=\"" . $elemento->potencia . "\" />
              Unidades: <input type=\"text\" name=\"unidades\" value=\"" . $elemento->ud . "\" />
              Porcentaje de uso en horario valle: <input type=\"text\" name=\"porHorarioValle\" value=\"" . $elemento->porTarValle . "\" />
              Porcentaje de uso en horario pico: <input type=\"text\" name=\"porHorarioPico\" value=\"" . $elemento->porTarPico . "\" />
              Horas de uso: <input type=\"text\" name=\"horas\" value=\"" . $elemento->horas . "\" />
              ";
            //<input type=\"submit\" value=\"Guardar\" name=\"guardar_".$elemento->elementoConsumoName."\"/>
        }
    }
    $resul1 = $resul1 . pieChart($plantilla1->plantillaName, $arrayPieChart);
    return $resul1;
}

function parsePlantillaQuery($query) {


    $catAux = "";



    $i = 0;

    $plantilla1 = new Plantilla();

    $resulQuery1 = databaseQuery($query);


    while ($row = mysql_fetch_assoc($resulQuery1)) {

        if ($i == 0) {
            $categoria = new CategoriaPlantilla();
            $plantilla1->plantillaName = $row["plantillaName"];
            $categoria->categoriaName = $row["categoriaName"];
            $catAux = $row["categoriaName"];
            //$plantilla1->arrayCategorias = $categoria;
        }

        if ($catAux != $row["categoriaName"]) {

            $plantilla1->arrayCategorias[] = $categoria;

            $categoria = new CategoriaPlantilla();
            $categoria->categoriaName = $row["categoriaName"];
        }


        $elementoConsumo = new ElementoConsumoPlantilla();


        $elementoConsumo->horas = $row["horasUso"];
        $elementoConsumo->elementoConsumoName = $row["elementoConsumoName"];
        $elementoConsumo->porTarPico = $row["porTarifaPico"];
        $elementoConsumo->porTarValle = $row["porTarifaValle"];
        $elementoConsumo->potencia = $row["potencia"];
        $elementoConsumo->ud = $row["unidades"];
        $categoria->arrayElementosConsumo[] = $elementoConsumo;

        $catAux = $row["categoriaName"];
        $i = $i + 1;
    }

    $plantilla1->arrayCategorias[] = $categoria;

    $plantilla1->costePlantilla();


    return $plantilla1;
}

function pieChartPlantilla($plantilla) {
    
}

function pieChart($nombrePlantilla, $arrayCategoriaCoste) {



    $i = 0;
    foreach ($arrayCategoriaCoste as $categoria => $coste) {
        //echo "\$a[$k] => $v.\n";
        if ($i == 0) {
            $rows = "['" . $categoria . "', " . $coste . "]";
        } else {
            $rows = $rows . ", ['" . $categoria . "', " . $coste . "]";
        }
        $i = $i + 1;
    }

    $resul = "<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>
    <script type=\"text/javascript\">
    
      // Load the Visualization API and the piechart package.
      google.load('visualization', '1.0', {'packages':['corechart']});
      
      // Set a callback to run when the Google Visualization API is loaded.
      google.setOnLoadCallback(drawChart);


      // Callback that creates and populates a data table, 
      // instantiates the pie chart, passes in the data and
      // draws it.
      function drawChart() {

      // Create the data table.
      var data = new google.visualization.DataTable();
      data.addColumn('string', 'Categorias');
      data.addColumn('number', 'Slices');
      data.addRows([" . $rows . "]);

      // Set chart options
      var options = {'title':'" . $nombrePlantilla . "',
                     'width':400,
                     'height':300};

      // Instantiate and draw our chart, passing in some options.
      var chart = new google.visualization.PieChart(document.getElementById('" . $nombrePlantilla . "_chart'));
      chart.draw(data, options);
    }
    </script>
<div id=" . $nombrePlantilla . "_chart style=\"width:400; height:300\"></div>    
";

            return $resul;
        }
?>
